package 链表;

public class Solution24 {
    public static void main(String[] args) {
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(2, node1);
        ListNode node3 = new ListNode(6, node2);
        ListNode node4 = new ListNode(3, node3);
        ListNode node5 = new ListNode(2, node4);
        ListNode node = swapPairs(node5);
        System.out.println(node);

    }

    public static ListNode swapPairs(ListNode head) {
        ListNode tail = new ListNode(0, head);
        ListNode cur = tail;


        while (cur.next != null && cur.next.next != null) {
            //这里采用记录各个位置，再赋值地址的方式，模拟改变节点位置，理解起来会比较简单
            ListNode one = cur.next;
            ListNode two = cur.next.next;
            ListNode three = cur.next.next.next;
            //头指向2
            cur.next = two;
            //2指向1
            //461->459
            cur.next.next = one;
            //1指向3
            cur.next.next.next = three;
            //移动
            cur = cur.next.next;
        }
        return tail.next;
    }
}
